SOQL (Salesforce Object Query Language) এবং SOSL (Salesforce Object Search Language) হলো Salesforce প্ল্যাটফর্মে ডেটা অনুসন্ধান এবং রিট্রাইভ করার জন্য ব্যবহৃত দুটি প্রধান ভাষা। SOQL ব্যবহার করে নির্দিষ্ট অবজেক্ট থেকে রেকর্ডগুলি ফিল্টার করা যায়, যেখানে SOSL ব্যবহার করে একাধিক অবজেক্টে একসাথে অনুসন্ধান চালানো যায়।
SOQL হলো Salesforce প্ল্যাটফর্মের একটি কুয়েরি ভাষা যা Salesforce ডেটাবেজ থেকে রেকর্ড রিট্রাইভ করার জন্য ব্যবহৃত হয়। এটি SQL (Structured Query Language)-এর মতোই কাজ করে, তবে এটি Salesforce-এর অবজেক্ট এবং ফিল্ডের জন্য কাস্টমাইজড।
WHERE
এবং ORDER BY
কন্ডিশন ব্যবহার করে রেকর্ড ফিল্টার এবং সাজানো যায়।SELECT fields FROM Object WHERE condition ORDER BY field
বেসিক কুয়েরি: Account
অবজেক্ট থেকে Name
এবং Industry
ফিল্ড রিট্রাইভ করা:
SELECT Name, Industry FROM Account
WHERE কন্ডিশন: Account
অবজেক্ট থেকে Industry
যদি Technology
হয় সেই রেকর্ডগুলো রিট্রাইভ করা:
SELECT Name FROM Account WHERE Industry = 'Technology'
ORDER BY ব্যবহার: Account
অবজেক্ট থেকে রেকর্ডগুলো নামের ক্রমানুসারে সাজানো:
SELECT Name FROM Account ORDER BY Name
LIMIT ব্যবহার: কেবলমাত্র প্রথম পাঁচটি রেকর্ড রিট্রাইভ করা:
SELECT Name FROM Account LIMIT 5
Parent-to-Child Relationship: Account
থেকে Contact
সম্পর্কিত রেকর্ড রিট্রাইভ করা:
SELECT Name, (SELECT LastName FROM Contacts) FROM Account
SOSL হলো Salesforce-এর একটি সার্চ ভাষা যা একাধিক অবজেক্টে একসাথে অনুসন্ধান করতে ব্যবহৃত হয়। SOSL ব্যবহার করে একটি কুয়েরির মাধ্যমে Salesforce ডেটাবেজে একাধিক অবজেক্টের উপর ভিত্তি করে নির্দিষ্ট টেক্সট সার্চ করা যায়।
LIMIT
ব্যবহার করা যায়।FIND 'searchText' IN ALL FIELDS RETURNING Object (fields)
বেসিক সার্চ: Account
এবং Contact
অবজেক্টে Acme
শব্দ সার্চ করা:
FIND 'Acme' IN ALL FIELDS RETURNING Account(Name), Contact(FirstName, LastName)
LIMIT ব্যবহার: সর্বাধিক পাঁচটি ফলাফল রিটার্ন করা:
FIND 'Technology' IN ALL FIELDS RETURNING Account(Name) LIMIT 5
সর্বাধিক মিলে যাওয়া সার্চ: একটি টেক্সট সার্চ যা সকল অবজেক্টের সব ফিল্ডে Smith
শব্দ খুঁজে বের করবে:
FIND 'Smith' IN ALL FIELDS
বৈশিষ্ট্য | SOQL | SOSL |
---|---|---|
ব্যবহার | নির্দিষ্ট অবজেক্ট থেকে নির্দিষ্ট রেকর্ড রিট্রাইভ করতে ব্যবহৃত | একাধিক অবজেক্টে টেক্সট সার্চ করতে ব্যবহৃত |
কুয়েরি ফিল্টারিং | WHERE , ORDER BY ব্যবহার করে ফলাফল ফিল্টার করা যায় | কেবল টেক্সট সার্চ; কোনো WHERE বা ORDER BY নেই |
Relationships | Parent-to-Child এবং Child-to-Parent সম্পর্ক সমর্থন করে | Relationships সমর্থন করে না |
রিটার্ন টাইপ | নির্দিষ্ট অবজেক্ট থেকে নির্দিষ্ট ফিল্ডের মান রিটার্ন করে | একসাথে একাধিক অবজেক্টে টেক্সট ফিল্ড রিটার্ন করে |
LIMIT ব্যবহার | সমর্থন করে | সমর্থন করে |
LIMIT
ব্যবহার করে ফলাফল সীমিত রাখা।WHERE
কন্ডিশন ব্যবহার করা, যাতে অপ্রয়োজনীয় রেকর্ড বাদ দেওয়া যায়।SOQL এবং SOSL ব্যবহার করে Salesforce ডেটাবেজের বিভিন্ন অবজেক্ট থেকে ডেটা রিট্রাইভ এবং সার্চিং কার্যকরীভাবে সম্পন্ন করা যায়।
SOQL (Salesforce Object Query Language) হলো Salesforce-এর একটি কুয়েরি ভাষা, যা Salesforce ডেটাবেজে থাকা বিভিন্ন অবজেক্ট থেকে রেকর্ড সংগ্রহ করতে ব্যবহৃত হয়। SOQL অনেকটা SQL-এর মতো কাজ করে, তবে এটি Salesforce এর অবজেক্ট এবং ডেটা কাঠামোর জন্য বিশেষভাবে ডিজাইন করা হয়েছে।
SOQL ব্যবহার করে Salesforce ডেটাবেজে থাকা অবজেক্ট যেমন Account, Contact, Opportunity ইত্যাদি থেকে ডেটা সহজেই পুনরুদ্ধার করা যায়। SOQL কুয়েরি মূলত SELECT স্টেটমেন্টের মাধ্যমে একটি নির্দিষ্ট অবজেক্টের ফিল্ড থেকে ডেটা নিয়ে আসে এবং WHERE, ORDER BY, এবং LIMIT এর মতো ক্লজ ব্যবহার করে ডেটা ফিল্টার এবং সাজানো যায়।
SOQL সাধারণত Apex ক্লাস, ট্রিগার, এবং Visualforce পেজের মধ্যে ব্যবহৃত হয়, যেখানে ডেটা অনুসন্ধান এবং পুনরুদ্ধারের প্রয়োজন হয়।
SELECT স্টেটমেন্ট: SOQL-এ SELECT স্টেটমেন্ট ব্যবহার করে নির্দিষ্ট অবজেক্টের ফিল্ড থেকে ডেটা আনা হয়।
WHERE ক্লজ: WHERE ক্লজ ব্যবহার করে নির্দিষ্ট শর্তের ভিত্তিতে ডেটা ফিল্টার করা যায়।
ORDER BY: ORDER BY ক্লজ ব্যবহার করে রেকর্ডগুলোকে বর্ধমান বা হ্রাসমান ক্রমে সাজানো যায়।
LIMIT: LIMIT ক্লজ ব্যবহার করে কুয়েরিতে নির্দিষ্ট সংখ্যক রেকর্ড ফেরত আনা যায়।
Relationship Query: SOQL এর মাধ্যমে Parent-Child এবং Child-Parent সম্পর্কিত অবজেক্টের মধ্যে কুয়েরি চালানো সম্ভব।
Aggregate Functions: SOQL Aggregate ফাংশন (যেমন: COUNT, AVG, MIN, MAX, SUM) সাপোর্ট করে, যা রিপোর্টিং এবং ডেটা অ্যানালাইসিসে সহায়ক।
SELECT field1, field2 FROM ObjectName WHERE condition ORDER BY field LIMIT number
নিচের কুয়েরিতে Account অবজেক্টের Id এবং Name ফিল্ড থেকে ডেটা আনা হয়েছে।
List<Account> accounts = [SELECT Id, Name FROM Account];
Account
অবজেক্টের সব রেকর্ডের Id এবং Name সংগ্রহ করা হয়েছে।নিচের কুয়েরিতে Industry ফিল্ডের মান 'Technology' এমন সব Account রেকর্ড পুনরুদ্ধার করা হয়েছে।
List<Account> techAccounts = [SELECT Id, Name FROM Account WHERE Industry = 'Technology'];
নিচের কুয়েরিতে Account অবজেক্টের Name অনুযায়ী সাজানো হয়েছে এবং শুধুমাত্র প্রথম পাঁচটি রেকর্ড রিটার্ন করা হয়েছে।
List<Account> sortedAccounts = [SELECT Id, Name FROM Account ORDER BY Name LIMIT 5];
Parent-Child সম্পর্কিত কুয়েরিতে, এক Parent অবজেক্ট থেকে তার Child অবজেক্টের রেকর্ডগুলো সংগ্রহ করা যায়। নিচে Account এবং Contact এর Parent-Child কুয়েরি উদাহরণ দেয়া হলো।
List<Account> accountsWithContacts = [SELECT Id, Name, (SELECT Id, FirstName, LastName FROM Contacts) FROM Account];
Aggregate ফাংশন ব্যবহার করে SOQL কুয়েরি দ্বারা গাণিতিক অপারেশন সম্পন্ন করা যায়, যেমন COUNT
।
Integer totalAccounts = [SELECT COUNT() FROM Account WHERE Industry = 'Technology'];
Industry
ফিল্ডে 'Technology' থাকা Account রেকর্ডের সংখ্যা গণনা করা হয়েছে।SOQL বিভিন্ন ক্ষেত্রে ব্যবহার করা হয়, যেমন:
ডেটা অনুসন্ধান এবং প্রদর্শন: Apex ক্লাস বা ট্রিগার থেকে ডেটা সংগ্রহ করে প্রয়োজনীয় ডেটা প্রদর্শনে SOQL কুয়েরি করা যায়।
রিপোর্টিং এবং ডেটা অ্যানালাইসিস: SOQL এর মাধ্যমে Aggregate ফাংশন ব্যবহার করে রিপোর্ট এবং ডেটা অ্যানালাইসিসে সহায়তা করা যায়।
Parent-Child সম্পর্কিত ডেটা পুনরুদ্ধার: SOQL Parent-Child সম্পর্কিত কুয়েরি সাপোর্ট করে, যা সম্পর্কিত ডেটা সংগ্রহে সহায়ক।
সহজ এবং দ্রুত অনুসন্ধান: SOQL সহজেই Salesforce ডেটাবেজে কুয়েরি চালাতে পারে, যা প্রয়োজনীয় ডেটা দ্রুত ফিরে পেতে সাহায্য করে।
Relationship Querying: Parent-Child এবং Child-Parent সম্পর্কিত ডেটা সংগ্রহ করা সম্ভব, যা ডেটার সম্বন্ধ বুঝতে সহায়ক।
রিপোর্টিং এবং অ্যানালাইসিসে সহায়ক: SOQL-এ Aggregate ফাংশন ব্যবহার করে বিভিন্ন ধরণের রিপোর্ট তৈরি এবং ডেটা বিশ্লেষণ করা যায়।
বৈশিষ্ট্য | SOQL | SOSL |
---|---|---|
ব্যবহার | নির্দিষ্ট অবজেক্টের রেকর্ড পুনরুদ্ধারে | একাধিক অবজেক্টে কী-ওয়ার্ড সার্চে |
কুয়েরি ভাষা | SELECT ব্যবহার করে | FIND ব্যবহার করে |
Aggregate Functions | সমর্থিত | সমর্থিত নয় |
Relationship Queries | সমর্থিত | সমর্থিত নয় |
SOQL হলো একটি কুয়েরি ভাষা, যা Salesforce প্ল্যাটফর্মে ডেটা সংগ্রহ, ফিল্টারিং, এবং সম্পর্কিত অবজেক্টের ডেটা সংগ্রহে সহায়ক। এটি সহজেই Parent-Child সম্পর্কিত কুয়েরি এবং Aggregate ফাংশন সাপোর্ট করে, যা ডেটা বিশ্লেষণ এবং রিপোর্টিংয়ের জন্য কার্যকর। Salesforce ডেটাবেজে ডেটা অনুসন্ধান ও প্রক্রিয়াকরণে SOQL একটি অত্যন্ত গুরুত্বপূর্ণ টুল।
SOQL (Salesforce Object Query Language) Salesforce প্ল্যাটফর্মে ডেটা রিট্রাইভ করার জন্য ব্যবহৃত একটি কুয়েরি ভাষা। এটি নির্দিষ্ট অবজেক্টের নির্দিষ্ট ফিল্ডের উপর ভিত্তি করে ডেটা অনুসন্ধান ও রিট্রাইভ করতে সাহায্য করে। SOQL এর সিনট্যাক্স SQL এর মতো, তবে এটি Salesforce-এর অবজেক্ট ও ফিল্ড কাঠামোর সাথে সামঞ্জস্য রেখে তৈরি করা হয়েছে।
SOQL কুয়েরি লেখার জন্য একটি নির্দিষ্ট সিনট্যাক্স অনুসরণ করতে হয়। সাধারণভাবে, একটি SOQL কুয়েরি নির্দিষ্ট অবজেক্টের কিছু নির্দিষ্ট ফিল্ড এবং শর্ত সাপেক্ষে রেকর্ড রিট্রাইভ করে।
SOQL Syntax:
SELECT fields FROM Object WHERE condition ORDER BY field LIMIT number
বেসিক কুয়েরি: Account
অবজেক্ট থেকে Name
এবং Industry
ফিল্ড রিট্রাইভ করা:
SELECT Name, Industry FROM Account
WHERE কন্ডিশন: Account
অবজেক্ট থেকে Industry
যদি Technology
হয় সেই রেকর্ডগুলো রিট্রাইভ করা:
SELECT Name FROM Account WHERE Industry = 'Technology'
ORDER BY ব্যবহার: Account
অবজেক্ট থেকে রেকর্ডগুলো নামের ক্রমানুসারে সাজানো:
SELECT Name FROM Account ORDER BY Name
LIMIT ব্যবহার: কেবলমাত্র প্রথম পাঁচটি রেকর্ড রিট্রাইভ করা:
SELECT Name FROM Account LIMIT 5
Parent-to-Child Relationship: Account
থেকে সম্পর্কিত Contact
রেকর্ড রিট্রাইভ করা:
SELECT Name, (SELECT LastName FROM Contacts) FROM Account
Child-to-Parent Relationship: Contact
থেকে সম্পর্কিত Account
রেকর্ড রিট্রাইভ করা:
SELECT LastName, Account.Name FROM Contact
SOQL কুয়েরি এক্সিকিউট করার জন্য Apex-এ কিছু কুয়েরি মেথড রয়েছে, যা সাধারণত SOQL স্টেটমেন্টের সাথে যুক্ত থাকে। এগুলো Salesforce ডেটাবেজে কুয়েরি চালাতে সাহায্য করে।
Database.query(queryString)
Database.query()
মেথডটি একটি ডায়নামিক SOQL কুয়েরি চালানোর জন্য ব্যবহৃত হয়, যেখানে কুয়েরি স্ট্রিং আকারে প্রদান করা হয়। ডায়নামিক কুয়েরি ব্যবহার করে কুয়েরি স্ট্রিং পরিবর্তন করা যায় এবং নির্দিষ্ট শর্ত বা ভ্যারিয়েবলের উপর ভিত্তি করে কুয়েরি চালানো সম্ভব।
উদাহরণ:
String query = 'SELECT Name FROM Account WHERE Industry = \'Technology\'';
List<Account> accounts = Database.query(query);
for (Account acc : accounts) {
System.debug('Account Name: ' + acc.Name);
}
SOQL For Loop
SOQL For Loop ব্যবহার করে একাধিক রেকর্ড একবারে রিট্রাইভ করা এবং ইটেমগুলো লুপের মাধ্যমে প্রসেস করা যায়। এটি SOQL এর গভর্নর লিমিট মেনে বড় পরিমাণের ডেটা হ্যান্ডল করতে সাহায্য করে।
Syntax:
for (List<SObject> variable : [SOQL query]) {
// Process each batch of records
}
উদাহরণ:
for (List<Account> accountList : [SELECT Name FROM Account]) {
for (Account acc : accountList) {
System.debug('Account Name: ' + acc.Name);
}
}
getQueryLocator(query)
getQueryLocator()
মেথডটি ব্যাপক পরিমাণের ডেটা প্রসেস করার জন্য ব্যবহার করা হয়। এটি ব্যাচ প্রসেসিং এবং পেজিনেশনের জন্য কার্যকরী।
উদাহরণ:
Database.QueryLocator queryLocator = Database.getQueryLocator('SELECT Id, Name FROM Account');
COUNT()
ফাংশনCOUNT()
ফাংশন ব্যবহার করে নির্দিষ্ট শর্তে মোট রেকর্ড সংখ্যা গণনা করা হয়।
উদাহরণ:
Integer accountCount = [SELECT COUNT() FROM Account WHERE Industry = 'Technology'];
System.debug('Total Technology Accounts: ' + accountCount);
Aggregate Functions
SOQL-এ SUM()
, AVG()
, MIN()
, MAX()
ইত্যাদি অ্যাগ্রিগেট ফাংশন ব্যবহার করে গাণিতিক পরিসংখ্যান রিট্রাইভ করা যায়।
উদাহরণ:
AggregateResult[] results = [SELECT SUM(AnnualRevenue) FROM Account WHERE Industry = 'Technology'];
System.debug('Total Annual Revenue: ' + results[0].get('expr0'));
LIMIT
ব্যবহার করা।Database.query()
ব্যবহার করে ডায়নামিক SOQL তৈরি করা।SELECT fields FROM Object WHERE condition ORDER BY field LIMIT number
Database.query()
, SOQL For Loop
, getQueryLocator()
, COUNT()
, এবং অ্যাগ্রিগেট ফাংশন।SOQL এবং Query Methods ব্যবহার করে Apex-এ Salesforce ডেটাবেজ থেকে বিভিন্ন ধরনের ডেটা রিট্রাইভ এবং প্রক্রিয়াকরণ করা যায়, যা ব্যবসায়িক প্রক্রিয়ায় অত্যন্ত সহায়ক।
SOSL (Salesforce Object Search Language) Salesforce প্ল্যাটফর্মের একটি সার্চ ভাষা, যা একাধিক অবজেক্টে কী-ওয়ার্ড ভিত্তিক সার্চ করতে ব্যবহৃত হয়। SOSL অনেকটা সার্চ ইঞ্জিনের মতো কাজ করে এবং এটি মূলত কী-ওয়ার্ড দিয়ে বিভিন্ন অবজেক্টের এক বা একাধিক ফিল্ডে সার্চ করে সংশ্লিষ্ট রেকর্ডগুলো রিটার্ন করে।
SOSL সাধারণত FIND কিওয়ার্ড ব্যবহার করে সার্চ চালায়। SOSL কুয়েরিতে নির্দিষ্ট কী-ওয়ার্ড বা টার্ম দিয়ে একাধিক অবজেক্টের মধ্যে সার্চ করা যায়। এটি একাধিক অবজেক্ট এবং ফিল্ডে দ্রুত সার্চ করার জন্য খুবই কার্যকর, বিশেষ করে যখন নির্দিষ্ট অবজেক্ট বা ফিল্ডে দ্রুত কোনো তথ্য খুঁজে বের করতে হয়।
FIND 'search_term' IN ALL FIELDS RETURNING ObjectName1(Field1, Field2), ObjectName2(Field1, Field2)
নিচের উদাহরণে, Contact এবং Account অবজেক্টে 'John' নামক কী-ওয়ার্ডের ভিত্তিতে সার্চ করা হয়েছে।
List<List<SObject>> searchResults = [FIND 'John' IN ALL FIELDS RETURNING Contact(FirstName, LastName), Account(Name)];
Contact
অবজেক্টের FirstName
, LastName
এবং Account
অবজেক্টের Name
ফিল্ডে 'John' কী-ওয়ার্ড দিয়ে সার্চ করা হয়েছে।SOSL-এ '*' ব্যবহার করে আংশিক মিলে থাকা ডেটা সার্চ করা যায়। নিচের উদাহরণে, 'Tech' দিয়ে শুরু হওয়া সমস্ত রেকর্ড সার্চ করা হয়েছে।
List<List<SObject>> searchResults = [FIND 'Tech*' IN ALL FIELDS RETURNING Account(Name), Opportunity(Name)];
Account
এবং Opportunity
অবজেক্টের নামের মধ্যে 'Tech' দিয়ে শুরু হওয়া সমস্ত রেকর্ড সার্চ করা হয়েছে।নিচে FIND
কিওয়ার্ড ব্যবহার করে একটি নির্দিষ্ট কী-ওয়ার্ড দিয়ে Account
অবজেক্টে সার্চ করা হয়েছে এবং শুধুমাত্র Name
ফিল্ডে মিল থাকা রেকর্ডগুলো রিটার্ন করা হয়েছে।
List<List<SObject>> searchResults = [FIND 'Software' IN NAME FIELDS RETURNING Account(Name)];
Account
অবজেক্টের শুধুমাত্র Name
ফিল্ডে 'Software' কী-ওয়ার্ড দিয়ে সার্চ করা হয়েছে।বৈশিষ্ট্য | SOSL | SOQL |
---|---|---|
প্রধান উদ্দেশ্য | একাধিক অবজেক্টে কী-ওয়ার্ড ভিত্তিক সার্চ | নির্দিষ্ট অবজেক্টে ডেটা কুয়েরি |
কিওয়ার্ড | FIND | SELECT |
Aggregate Functions | সমর্থিত নয় | সমর্থিত |
Relationship Querying | সমর্থিত নয় | Parent-Child ও Child-Parent সম্পর্কিত কুয়েরি সমর্থিত |
Wildcard Search | সমর্থিত | সমর্থিত নয় |
ফিল্ড নির্দিষ্ট সার্চ | IN ALL FIELDS বা নির্দিষ্ট ফিল্ডে সার্চ করা যায় | নির্দিষ্ট ফিল্ডের ডেটা সংগ্রহ করা যায় |
নিচের উদাহরণে, SOSL ব্যবহার করে Account
এবং Contact
অবজেক্টে নির্দিষ্ট কী-ওয়ার্ড দিয়ে সার্চ করা হয়েছে এবং ফলাফল প্রিন্ট করা হয়েছে।
public class SOSLExample {
public static void searchRecords(String searchKeyword) {
// SOSL কুয়েরি
List<List<SObject>> searchResults = [FIND :searchKeyword IN ALL FIELDS RETURNING Account(Name), Contact(FirstName, LastName)];
// Account রেকর্ড প্রিন্ট করা
List<Account> accounts = (List<Account>) searchResults[0];
for (Account acc : accounts) {
System.debug('Account Name: ' + acc.Name);
}
// Contact রেকর্ড প্রিন্ট করা
List<Contact> contacts = (List<Contact>) searchResults[1];
for (Contact con : contacts) {
System.debug('Contact Name: ' + con.FirstName + ' ' + con.LastName);
}
}
}
Account
এবং Contact
অবজেক্টে সার্চ চালানো হয়েছে এবং প্রাপ্ত রেকর্ডগুলোকে প্রিন্ট করা হয়েছে।SOSL হলো Salesforce-এর একটি সার্চ ভাষা, যা একাধিক অবজেক্টে কী-ওয়ার্ড ভিত্তিক সার্চ চালায়। SOSL বিভিন্ন অবজেক্টের বিভিন্ন ফিল্ডে দ্রুত সার্চ করার জন্য উপযুক্ত এবং এটি Salesforce প্ল্যাটফর্মে মাল্টি-অবজেক্ট সার্চ এবং দ্রুত অনুসন্ধান কার্যক্রম সহজ করে তোলে।
Query এবং Search Performance Optimization Salesforce ডেটাবেজে কার্যকর ও দ্রুত অনুসন্ধানের জন্য প্রয়োজনীয়। একটি ভালোভাবে অপ্টিমাইজ করা কুয়েরি Salesforce গভর্নর লিমিটের মধ্যে থেকে ডেটা প্রক্রিয়াজাত করে এবং ব্যবহারকারীর জন্য দ্রুত ফলাফল প্রদান করে। এখানে কিছু গুরুত্বপূর্ণ কৌশল ও Best Practices আলোচনা করা হলো, যা SOQL এবং SOSL কুয়েরির পারফরম্যান্স বাড়াতে সহায়ক।
SOQL কুয়েরিতে শুধু প্রয়োজনীয় ফিল্ডগুলো নির্বাচন করা উচিত। অপ্রয়োজনীয় ফিল্ডগুলো রিট্রাইভ না করলে কুয়েরির সময় ও মেমরি কম লাগে এবং গভর্নর লিমিট অতিক্রমের সম্ভাবনা হ্রাস পায়।
অপ্টিমাইজড উদাহরণ:
// শুধুমাত্র প্রয়োজনীয় ফিল্ডগুলো সিলেক্ট করা হয়েছে
SELECT Id, Name FROM Account WHERE Industry = 'Technology'
WHERE ক্লজে যেসব ফিল্ডে ইন্ডেক্স রয়েছে, সেগুলো ব্যবহার করলে কুয়েরি দ্রুত সম্পন্ন হয়। Salesforce ইন্ডেক্স সাধারণত প্রধান ফিল্ড, যেমন Id
, Name
, OwnerId
ইত্যাদিতে থাকে। প্রয়োজনে কাস্টম ফিল্ডেও ইন্ডেক্সিং যুক্ত করা যায়।
অপ্টিমাইজড উদাহরণ:
SELECT Id, Name FROM Account WHERE AccountNumber = '12345' // ইন্ডেক্সড ফিল্ড
বেশি ডেটা রিট্রাইভের জন্য LIMIT
ব্যবহার করলে কুয়েরি গভর্নর লিমিটের মধ্যে থেকে ডেটা রিট্রাইভ করতে সক্ষম হয়। তাই প্রয়োজনের অতিরিক্ত ডেটা না নিয়ে নির্দিষ্ট সংখ্যক রেকর্ড সংগ্রহ করা উচিত।
অপ্টিমাইজড উদাহরণ:
SELECT Id, Name FROM Account WHERE Industry = 'Technology' LIMIT 10
একাধিক অবজেক্টে অনুসন্ধান করার জন্য SOSL ব্যবহার করা উত্তম। SOSL ব্যবহার করে একাধিক অবজেক্টে দ্রুত সার্চ চালানো যায় এবং কুয়েরি সময় কম লাগে।
উদাহরণ:
FIND 'Acme' IN ALL FIELDS RETURNING Account(Name), Contact(FirstName, LastName)
বেশি ডেটা প্রসেস করার জন্য SOQL For Loop ব্যবহার করা উচিত। এটি গভর্নর লিমিটের মধ্যে থেকে ডেটা প্রক্রিয়াকরণে সহায়ক।
অপ্টিমাইজড উদাহরণ:
for (List<Account> accList : [SELECT Id, Name FROM Account WHERE Industry = 'Technology']) {
for (Account acc : accList) {
System.debug('Account Name: ' + acc.Name);
}
}
NOT
এবং !=
অপারেটর WHERE ক্লজে ব্যবহার করলে কুয়েরির পারফরম্যান্সে নেতিবাচক প্রভাব ফেলতে পারে। এর পরিবর্তে =
বা IN
অপারেটর ব্যবহার করা উচিত।
অপ্টিমাইজড উদাহরণ:
// এর পরিবর্তে
// SELECT Id FROM Account WHERE Industry != 'Technology'
// এটি ব্যবহার করুন
SELECT Id FROM Account WHERE Industry IN ('Finance', 'Health')
বড় ডেটাসেট থেকে গাণিতিক পরিসংখ্যান রিট্রাইভ করতে অ্যাগ্রিগেট ফাংশন (যেমন COUNT()
, SUM()
, AVG()
, MAX()
, MIN()
) ব্যবহার করা উত্তম। এটি কুয়েরি পারফরম্যান্স বাড়াতে সহায়ক।
উদাহরণ:
SELECT COUNT() FROM Account WHERE Industry = 'Technology'
Parent-to-Child এবং Child-to-Parent Relationship কুয়েরি ব্যবহার করলে ডেটা একত্রে রিট্রাইভ করা যায় এবং পৃথক কুয়েরি চালানোর প্রয়োজন হয় না, যা পারফরম্যান্স বাড়ায়।
উদাহরণ:
// Parent-to-Child
SELECT Name, (SELECT LastName FROM Contacts) FROM Account
// Child-to-Parent
SELECT LastName, Account.Name FROM Contact
হার্ডকোড করা Id
ব্যবহার না করে পরিবর্তনশীল প্যারামিটার ব্যবহার করা উচিত। এটি কোডকে পুনঃব্যবহারযোগ্য করে এবং অপ্টিমাইজেশনে সহায়ক হয়।
Frequently Used কুয়েরিগুলো সেভ করে Cache ব্যবহার করলে ডেটা রিট্রাইভ দ্রুত হয়। এটি কুয়েরি পারফরম্যান্স বাড়ায়।
Salesforce গভর্নর লিমিট (যেমন DML Limit, SOQL Limit) অতিক্রম না করার জন্য সতর্ক হতে হবে। Bulkify করা এবং যেখানে সম্ভব LIMIT
ব্যবহার করা গভর্নর লিমিট মেনে চলে কুয়েরি পারফরম্যান্স বাড়ায়।
কুয়েরি লেখার সময় Apex CPU Time কম রাখতে কুয়েরি অপ্টিমাইজ করা উচিত। অতিরিক্ত লুপিং এড়িয়ে চলা এবং SOQL For Loop ব্যবহার করা উত্তম।
LIMIT
এবং সঠিক WHERE
ক্লজ ব্যবহার করুন।এসব কৌশল অনুসরণ করে SOQL এবং SOSL কুয়েরির পারফরম্যান্স বাড়ানো যায়, যা Salesforce ডেটাবেজ ব্যবহারে দ্রুততা এবং কার্যকারিতা নিশ্চিত করে।
common.read_more